import { sm2 } from 'sm-crypto'

/**
 * 使用 SM2 公钥加密明文，返回 hex 字符串（C1C3C2 拼接，未压缩，默认 sm-crypto 输出就是 hex）。
 */
export function sm2EncryptHex(plainText: string, publicKeyHex: string, mode: 0 | 1 = 0): string {
  // sm-crypto 要求公钥是 04 开头的 130 位 hex（未压缩格式）。
  // 如果后端给的是不带 04 的 128 位公钥，这里自动补 04。
  const normalizedPub = publicKeyHex?.startsWith('04') ? publicKeyHex : `04${publicKeyHex}`
  // mode=0 表示 C1C2C3（与你给的示例一致）；mode=1 表示 C1C3C2
  return sm2.doEncrypt(plainText, normalizedPub, mode, 'hex') as string
}
